home *** CD-ROM | disk | FTP | other *** search
- OPT MODULE
- OPT EXPORT
-
-
- /*******************************
- ** Display an error requester **
- *******************************/
- PROC error_request( text_body : PTR TO CHAR ) RETURN EasyRequestArgs( NIL ,
- [ 20 , 0 , 'GenCodeE error' , text_body , 'OK' ] ,
- NIL , NIL )
-
-
- /**********************************************
- ** Idents a definition in the generated file **
- **********************************************/
- PROC indent_defs( file , ident : PTR TO CHAR , ident_length_max )
-
- DEF i
-
- FOR i := 0 TO ( ident_length_max - EstrLen( ident ) ) DO FputC( file , " " )
-
- ENDPROC
-
-
- /**********************************************
- ** Idents a definition in the generated file **
- **********************************************/
- PROC indent_code( file , indent_level , return )
-
- DEF i
-
- IF return THEN FOR i := 1 TO indent_level DO FputC( file , "\t" )
-
- ENDPROC
-
-
- /********************************************************************
- ** Convert a C string with format codes to the equivalent E string **
- ********************************************************************/
- PROC string_convert ( raw_string : PTR TO CHAR )
-
- DEF converted_string1 : PTR TO CHAR
- DEF converted_string2 : PTR TO CHAR
- DEF aux_string : PTR TO CHAR
- DEF v2_vs_v1 = FALSE , char , char_value
- DEF str_pos = 0 , offset = 0
-
- converted_string1 := String( ( StrLen( raw_string ) * 2 ) + 2 )
- StringF( converted_string1 , '\a\s\a' , raw_string )
-
- IF ( InStr( raw_string , '\\' , 0 ) <> -1 ) OR ( InStr( raw_string , '\a' , 0 ) <> -1 )
-
- aux_string := String( StrLen( raw_string ) + 2 )
- converted_string2 := String ( StrLen( raw_string ) * 4 + 8 )
- StrAdd( converted_string2 , '[' , 1 )
-
- WHILE ( char := raw_string[ str_pos++ ] )
-
- IF char = "\\"
-
- char := raw_string[ str_pos++ ]
-
- SELECT char
-
- CASE "r"
-
- StrAdd( converted_string2 , '13,' , ALL )
- converted_string1[ str_pos + offset ] := "b"
-
- CASE "n"
-
- StrAdd( converted_string2 , '10,' , ALL )
-
- CASE "t"
-
- StrAdd( converted_string2 , '9,' , ALL )
-
- CASE "e"
-
- StrAdd( converted_string2 , '27,' , ALL )
-
- CASE "0"
-
- IF raw_string[ str_pos ]
-
- char_value := raw_string[ str_pos++ ] - "0"
-
- IF raw_string[ str_pos ]
-
- char_value := char_value * 8 + ( raw_string[ str_pos++ ] - "0" )
- StringF( converted_string2 , '\s\d,' , converted_string2 , char_value )
-
- IF char_value = 27
-
- MidStr( aux_string , raw_string , str_pos , ALL )
- SetStr( converted_string1 , str_pos + offset - 3 )
- StringF( converted_string1 , '\s\\e\s\a' , converted_string1 , aux_string )
- offset := offset - 2
-
- ELSE
-
- v2_vs_v1 := TRUE
-
- ENDIF
-
- ENDIF
-
- ENDIF
-
- CASE "x"
-
- IF raw_string[ str_pos ]
-
- char := raw_string[ str_pos++ ]
-
- IF char >= "a"
-
- char_value := char - "a" + 10
-
- ELSEIF char >= "A"
-
- char_value := char - "A" + 10
-
- ELSE
-
- char_value := char - "0"
-
- ENDIF
-
- IF raw_string[ str_pos ]
-
- char := raw_string[ str_pos++ ]
-
- IF char>="a"
-
- char_value := char_value * 16 + ( char - "a" + 10 )
-
- ELSEIF char>="A"
-
- char_value := char_value * 16 + ( char - "A" + 10 )
-
- ELSE
-
- char_value := char_value * 16 + ( char - "0" )
-
- ENDIF
-
- StringF( converted_string2 , '\s\d,' , converted_string2 , char_value )
-
- IF char_value=27
-
- MidStr( aux_string , raw_string , str_pos , ALL )
- SetStr( converted_string1 , str_pos + offset - 3 )
- StringF( converted_string1 , '\s\\e\s\a' , converted_string1 , aux_string )
- offset := offset - 2
-
- ELSE
-
- v2_vs_v1 := TRUE
-
- ENDIF
-
- ENDIF
-
- ENDIF
-
- CASE 0
-
- StrAdd( converted_string2 , '"\\",' , ALL )
- DEC str_pos
-
- DEFAULT
-
- StringF( converted_string2 , '\s"\c",' , converted_string2 , char )
-
- ENDSELECT
-
- ELSEIF char="'"
-
- StrAdd( converted_string2 , '"\a",', ALL )
-
- MidStr( aux_string , raw_string , str_pos , ALL )
- SetStr( converted_string1 , str_pos + offset )
- StringF( converted_string1 , '\s\a\a\s\a' , converted_string1 , aux_string )
- INC offset
-
- ELSE
-
- StringF( converted_string2 , '\s"\c",' , converted_string2 , char )
-
- ENDIF
-
- ENDWHILE
-
- StrAdd( converted_string2 , '0]:CHAR' , ALL )
-
- ENDIF
-
- ENDPROC IF v2_vs_v1 THEN converted_string2 ELSE converted_string1
-